{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# EDA\n",
    "\n",
    "作者：艾宏峰<br>\n",
    "创建时间：2020年2月13日\n",
    "\n",
    "EDA内容如下：<br>\n",
    "1. 总数据量数和各类别数据量总览<br>\n",
    "2. 图像库图像数量频次图<br>\n",
    "3. 图像库图像标注概况<br>\n",
    "4. 图像库文本数据概况<br>\n",
    "5. 视频库视频标注概况<br>\n",
    "6. 视频库文本数据概况<br>\n",
    "7. 其它"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "import glob\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['font.sans-serif']=['SimHei']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 文件路径\n",
    "dataset_paths = glob.glob('data/*')\n",
    "\n",
    "# 图像库中图片/标注/文本路径\n",
    "img_folder_paths = [] # 所有data/train_dataset_part<n>/images中所有文件夹\n",
    "img_ann_folder_paths = [] # 所有data/train_dataset_part<n>/image_annotatonl中所有文件夹\n",
    "img_txt_paths = [] # 所有data/train_dataset_part<n>/image_text中txt文件\n",
    "\n",
    "# 视频库中视频/标注/文本路径\n",
    "video_mp4_paths = [] # 所有data/train_dataset_part<n>/video中所有视频\n",
    "video_ann_paths = [] # 所有data/train_dataset_part<n>/video_annotation中所有json文件\n",
    "video_txt_paths = [] # 所有data/train_dataset_part<n>/video_text中txt文件\n",
    "\n",
    "for dataset_path in dataset_paths:\n",
    "#     if dataset_path.split('/')[-1].startswith('train'):\n",
    "        img_folder_paths.extend(glob.glob(dataset_path + '/image/*'))\n",
    "        img_ann_folder_paths.extend(glob.glob(dataset_path + '/image_annotation/*'))\n",
    "        img_txt_paths.extend(glob.glob(dataset_path + '/image_text/*.txt'))\n",
    "        \n",
    "        video_mp4_paths.extend(glob.glob(dataset_path + '/video/*.mp4'))\n",
    "        video_ann_paths.extend(glob.glob(dataset_path + '/video_annotation/*.json'))\n",
    "        video_txt_paths.extend(glob.glob(dataset_path + '/video_text/*.txt'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 总数据量数和各类别数据量总览\n",
    "针对image和video文件夹下的文件个数进行统计。同时对于类别数量，针对image_annotaion和vedio_annotation文件夹内的json标注文件进行统计。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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cu69996a+7169WL06NHZ7JYkSZKUVs2z3QClR2VlJfn5+Xz44YcArFixggceeICjjz6a119/nVWrVjFmzBh+85vfcPjhh9O3b18uvvhiXnvtNW688UYKCgpqXqugoKDm/pgxY8jPz89KnyRJkqRM8EjSfqpZs2YUFxfTpk0bAIYOHUq3bt149tlnqayspEePHlRUVHDEEUcQQqBjx4588MEHvPTSS0yfPp2TTz6ZG264YYfXXLduHWVlZeTk5GSjS5IkSVJGeCRpP7U9HKXatGkTjz76KN26dSOEQN++fbnnnnvo0KEDq1evpmfPnlRUVDBu3DhatGjBOeecw4oVK+jZsycAU6dO3eEIkyRp3/Tee+/xxz/+kT59+tC6detsN0eSGh2PJDUh7dq141e/+hVbtmzhlVdeYdq0aXz1q1/lnnvu4dprryWEwOmnn07r1q1p1qwZvXv35u233wZg27ZtzJ8/n0Qikd1OSJI+t88ao7pmzRoSiQRnnXUWo0aNIsZY89whQ4awbNmyHV6vrjJJ2p8YkpqIgoICFixYAMD69etp164dzZo145hjjgFg+PDhAAwcOJD33nuPjz76iOeff54TTjgBgIULF9KnTx9CCNnpgCRpr+xqjOrNN9/MUUcdxapVq5g2bRr33nsv8+bNY+3atbz++usAPPTQQxx99NH06tWr5vXqKpOk/Y0hqYm45ppruOGGG+jXrx+nnnpqTTgaO3YskydPrgk/N998M/379yc3N5fvf//7NcvNnj2bvLy8rLVfkrR39mSM6oQJEzj22GMBeP/99+nUqRMVFRVceeWVtG/fnvnz5wPUWSZJ+yPHJO3nSkpKADjyyCNZtGhRrcd/9atf7XC/f//+/O///m+t5W677ba0tE+S9jUVFRW8+uqr9O7dm06dOmW7OZ9pT8aobldcXMzxxx/PoYceyrhx47jkkksYPXo0119/PRs3buSVV16pVXbhhRdmsjuSlBGGpP1U9+ueTevrr540OK2vL0npVlZWxtChQ1m4cCFr1qzhu9/9Ll/4whfo0aMH06ZN429/+xt9+vShR48eADz22GM0b96cCy64gMGDB1NUVMS8efPo3Llzzeudd955vPbaa9ns1h7ZPkb1O9/5Dq+88gp9+vRh5cqV3HnnncydOxeA1157jTvvvJOuXbsybNgw5syZw1tvvVWrzJD0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DV6uYNd2nmRj5/vXXnst48aNIzc3l0svvZSSkhISiUSD1F1WVsZ5553HqFGjak41XL9+PX369GHatGk7LPPaa681SJ1Nzfa/37x587jgggsYPHgwRUVFzJs3r2bylZ1D8r7MkCRJkjJi+2le/fv353//9393eKx169Y89thjtZ5TV1kmNPtiK1oe2y8rde+Ltk+ycf755/PUU09x/vnn73D/61//Om+99RYnn3wykJyOPPWitvV11VVXsXnzZgoKCigoKABgzJgx5Ofn11qmIWzYsIFvfvObbN26lZYtW5JIJHjiiSeA2uFsfwkO2/9+K1as4K677iI3N5fKykqWLl3KwIED6zUTZWNkSJIkSQ2uYU8Fq80jOo1L6iQbU6ZMYfXq1TvcX7NmDUOHDmX8+PHk5uYya9YsJk6c2CB1z5s3j5YtW9K1a9easnXr1lFWVkZOTs4ul6mPhx56iKKiIs4991wKCgo48sgja3YCpIazdASH1Askb9myhYsvvpiKigpGjBjB5ZdfztKlS7nmmmvYvHkzF198MVdeeWW960z9+5155plA8kLES5Ys4aabbqoVklMvYryvcuIGSZIk1cvOk2w89dRTtSbdGDt2LIMGDWL69Onk5+fXXMS2Pqqqqrj11luZNGnSDuVTp06tOaK0q2Xqo7CwkHPPPReA8vJyunTpAuwYzuo7hX1ddr7m2JQpUzjllFN48cUXefzxx9m4cSNjxozhgQceYNGiRcycOZNVq1bVq866/n4xRoqLi2nfvj0HHHBAg89E2RgYkiRJklQvPXr02GGSjfnz59c56UavXr1Ys2YNRUVFDVLvpEmTKCwspF27djVl27ZtY/78+TXjnepapqEsXryYyspKcnNzgR3DWTqCw87XHEu98HFeXh6lpaVUVFRwxBFHEEKgY8eOfPDBB/Wqs66/XwiBqVOn0rNnT55++ukGn4myMTAkSZIkqV5GjBjB/PnzycvL42c/+xmrV6/e4f5VV10FwB133EFRUREtWrRokHrnzp3L1KlTSSQSLFu2jCuuuIKFCxfSp08fQgi7XKYhVFRUMGbMGO6//36gdjhLR3DY+ZpjdV34uG/fvtxzzz08/PDDrF69mp49e9arzp3/fiEEZsyYASTHX7Vr165WSN4fLkrsmCRJkiTtsV2ONzv6e3B08uaZ976xw/2+U5YBy4BT4Y8w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\n",
      "text/plain": [
       "<Figure size 1008x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "label_num_dict = {} # 类别数量 频次字典\n",
    "\n",
    "for img_ann_folder_path in img_ann_folder_paths:\n",
    "    json_paths = glob.glob(img_ann_folder_path + '/*.json')\n",
    "    for json_path in json_paths:\n",
    "        with open(json_path, 'r') as f:\n",
    "            img_ann = json.load(f)\n",
    "        \n",
    "        for ann in img_ann['annotations']:\n",
    "            label = ann['label']\n",
    "            \n",
    "            if label not in list(label_num_dict.keys()):\n",
    "                label_num_dict[label] = 1\n",
    "            else:\n",
    "                label_num_dict[label] += 1  \n",
    "            \n",
    "fig = plt.figure(figsize=(14,5))\n",
    "\n",
    "x1 = list(label_num_dict.keys())\n",
    "y1 = list(label_num_dict.values())\n",
    "plt.bar(range(len(x1)), y1)\n",
    "for a, b in zip(list(range(len(x1))), y1):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks(list(range(len(x1))), x1, rotation=45)\n",
    "plt.xlabel(\"图像库类别\")\n",
    "plt.ylabel(\"频次\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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PffcU/m+Z8+eXHfddXts26tXrz32V1RUxOzZs7NaB0mS1LRlLUiS1PiVl5czYsQItm/fDsArr7zCrbfeSklJCSUlJbRr147CwsLK9wUFBYwaNapy+3HjxvHxxx9Xvl+8eDHvv/8+gwcPznpd9tfnBYdbtmxh4MCB9O/fn0suuYQdO3bUGDCWl5czaNAg8vLy9gggVbMD+dzXrl3LBRdcQEFBATfccAMAn3zyCccee2zltqtXr85ltSRJOWaQJKnONGvWjFmzZtGyZUsAXn75ZWbOnMmpp57KLbfcsse6GzZsoKysjLy8PABeeOEFmjdvTocOHQDYuXMno0aNokuXLjz99NPZrch+2pfg8LHHHmPs2LHMmzePDh06MGfOnBoDxkcffZThw4dTWlrK1q1bKS0tzXHt6q8D/dxvuukmvve977F48WLeeecdSkpKWLVqFcOGDavc9pRTTslx7SRJuWSQJKnOtGzZklatWlW+HzhwICUlJbz66qssWbKEVatWVS4rLi6msLAQgB07djB58mSmTZtWufyRRx7h5JNP5sYbb2Tp0qXMmDEjexXZT/sSHBYVFXHeeecBsHHjRtq3b1+5fXrAePjhh/P666+zefNm3n77bTp16pT9CjUQB/q5v/HGG5x6avKRe+3bt2fLli28/PLLPPPMM5x++umMHDmSTz75JDeVkiTVCwZJkjLma1/7GocddhjNmjWjV69evPnmmwDs3r2bhQsXkkgkAJg2bRpFRUW0bt26ctvly5czevRoOnTowJVXXsnChQtzUYV9sj/B4ZIlSygvLyc//9OJOtMDxjPPPJP169dz5513ctJJJ9G2bdvsVaSBOdDP/bLLLmPSpEnMnj2bOXPmcM455/DVr36VBQsWsHTpUnbu3Mlzzz2XiypJkuoJgySpBu+99x4LFixg69atuS5KgzZgwADee+89/vKXvzBv3jy6desGJMcanXHGGYQQAFiwYAHFxcUkEglWrFjBtddeywknnMCaNWsAKC0tpXPnzjmrx/7aW3C4adMmxowZw4MPPli5btWAcdKkSdx7771MmDCBrl278tBDD+WiCg3Svn7ut912GwMHDmTmzJmMGDGCFi1a0L17d4466igA8vLyKreVJDVNBklq1NIHdVd4/fXXK7vf7Ny5k8GDB9OnT5/KC6g33niDoUOH8vvf/56zzjqLHTt2sGbNGs455xx69uzJ5MmTs16PhmrixIn069eP/Px8vv3tb3PiiScCMHfuXPr27Vu53qJFiyrHgvTs2ZOZM2cycuRIFi5cSN++fbn77rsZN25crqqx32oKDnfs2MHll1/O1KlT9wj4qgaM5eXlrF69ml27dvHKK69Upuvz7c/n3rNnT9566y3Gjh0LwFVXXcXKlSvZtWsXTz31FD169MhVNSRJ9YBBkhqtqoO6AWKMjB07lp07dwIwY8YMTjvtNH7/+9/z5JNPsnXrVlatWsVDDz3ExIkTOe6441i7di133XUXP/jBD1ixYgVz585l4zj4IEwAACAASURBVMaNuapWg1BSUgJAv379+N///V9WrVrFP/3TP1Uu/+EPf8ill176mdsedthh/OpXv2LRokUsWbKEjh07ZrrYdaam4PCBBx5g2bJlTJkyhUQiwaxZs4DqAeP48eMZPXo0rVq1YtOmTQwbNixX1Whw9udz//GPf8zYsWP50pe+BMCECRO46qqr6NmzJ7179+bcc8/NZVUkSTl2UK4LIGVKxaDuiy++uDLtoYceol+/fsydOxdIXpBXTBbQt29fSktLueyyy/jkk0949tlnKS8v54QTTuDwww9n1apVnHDCCfztb3/bY+yMkrrc/GzG81g37YKM51EbVYPDdIWFhZXjjtL98Ic/3OP96aefzh/+8IeMlbExOpDPfdKkSXu879at2x5jmCRJTZtBkhqtihmvKvz5z3/m5z//OXPnzq0MkrZv317ZQtG2bVvKysoA2LZtG0888QSdO3cmhMD555/PnXfeyTvvvMPZZ5/NQQd56OhTmQ4Q63twmAsG5ZKkTLK7nZqMm2++malTp3LwwQdXprVo0aLy4aXbtm1j9+7dALRu3ZqHH36YnTt38uqrrzJt2jT+8z//kylTpvDxxx8zf/78nNRBkiRJmWeQpCbjxRdf5KabbqqcQe22227jtNNO46WXXgJg5cqVdOnShcLCQhYtWgTA5s2bad26NWvXruXtt9/mr3/9K8uWLXMwvZQmfYKUt956i0Qiwdlnn83o0aOJMdaYNnHiRBKJBIlEgq5duzJ16tQaJ1KRJCkX7DOkJuONN96ofJ1IJLj99ttZv349gwYNYvHixfzxj3/kjDPO4KijjuKqq64ihED//v058cQTmTRpEolEgo0bN3LhhRdy9tln57AmUv1RdYKU++67j3vuuYeTTjqJgQMHsnr1ambNmlUtLX1M0GWXXcbVV19dOZHK97//fQYNGsTll1/OYYcdlquqSZKaMIMkNUp7jFfI/9fq4xfS0j5J3MTj6/7IoWf+K8ffOie5/MzxADywHR6o2HbIDA4HlgDH3zrH8QoS1SdImTJlSuWyP//5zxxxxBE1plV49dVXOeaYY+jYsWONE6n069cvSzWRJOlTBklq8g467HAOOqng81eUVE3VCVIqzJo1i3/4h3/g6KOP/sy0n/3sZ5WtSnubSEWSpGwzSJIk1ak1a9bwk5/8hAULFnxm2ubNm/nggw84/vjjgU8nUmnVqhXbtm2jRYsWWS+7JEngxA2SpDpUXl7OsGHDePDBB2nVqtVe0wCefvppBg0aVPm+polUJEnKBVuSJEl1Ztq0abz11luMGTMGSD609bnnnquWdtZZZzF37lzGjRtXue2IESOqTaQiSVIuGCRJkg5IjROkhL4cMqIv61LJI57fVnPa88/CscO59In34IlP91N1IhUnSJEk5YJBkiSp3nAiFUlSfeCYJEmSJElKY5AkSZIkSWkMkiRJkiQpTUaDpBDCkSGExanXB4cQZocQfh9CuKa2aZIkSZKUCRkLkkIIbYCHgeappDHAazHGPsBlIYTDapkmSZIkSXUuky1Ju4ChwEep9wngidTrRUBeLdP2EEIYHUIoDSGUbty4se5qIUmSJKlJyViQFGP8KMa4JS2pObAh9XoTcGQt06rmd3+MMS/GmNeuXbu6rIokSZKkJiSbEzdsAw5NvW6Ryrs2aVKDUVRUxOzZsykvL2fQoEHk5eVx3XXXVS4vKyujoODTZ8MsW7aMc889lz59+vDTn/40F0WWJElqsrIZbLwGnJl63QNYV8s0qUFYvHgx77//PoMHD+bRRx9l+PDhlJaWsnXrVkpLSykvL2fEiBFs3769cpsxY8bw0EMP8dJLL/HrX/+atWvX5rAGkiRJTctBWczrYeC5EEIBcDLwCskudAeaJtV7O3fuZNSoUQwaNIinn36aww8/nNdff53Nmzfz9ttv06lTJ5o1a8asWbO4+OKLK7fbtGkTnTp1AuDwww/no48+2lsWkiRJqmMZb0mKMSZS/68HzgN+D5wbY9xVm7RMl1uqC4888ggnn3wyN954I0uXLuVPf/oT69ev58477+Skk06ibdu2tGzZklatWu2xXZ8+fbjrrrt4/PHHWbduHd27d89RDSRJkpqerI7tiTG+G2N8In1Ch9qkSfXd8uXLGT16NB06dODKK6/kxRdf5N5772XChAl07dqVhx56qMbt7rvvPrp27cpdd93FTTfdRAghyyWXJElqupwAQcqgE044gTVr1gBQWlpKq1atWL16Nbt27eKVV17Za/DTrFkzTjzxRACGDx+etfJKkiTJIEnKqJEjR7Jw4UL69u3L3Xffzb/8y78wevRoWrVqxaZNmxg2bNhet73tttuYPn26rUiSJElZls2JG6Qm57DDDuNXv/rVHml/+MMfaly3pKRkj/cPP/xwporVJJSVlXH++eezfPlyIDkN+8CBAxk8eDCffPIJxx13HMcddxwAM2bM4JRTTmHixIk899xznH766RQXF+ey+JIkKYcMkqQ61uXmZzOex7ppF2Q8j4Zu3LhxfPzxx8Ce07ADrFq1imHDhjF9+vTK9V977TVeeuklli5dyg9+8AMWLFjAueeem5OyS5Kk3LK7naRG54UXXqB58+Z06NChchr2Ll268PTTTwPw8ssv88wzz3D66aczcuRIPvnkE1588UW+8Y1vEEJgwIABLF68OMe1kOq3TZs2MX/+fD788MNcFyXrmnLdmyK/76bJIElSo7Jjxw4mT57MtGnTgOrTsM+YMYOvfvWrLFiwgKVLl7Jz506ee+45tm/fTseOHQFo27YtZWVluayGVK+Vl5dz4YUXsnTpUvr168fkyZNJJBIkEgl69uzJddddxz333FMtDZJjNXv37s3tt9+e41ocmKp137hxI5Ds4turV6891i0qKmL27NmV2w0aNIi8vLzKz0L1396+7/TvdsuWLQwcOJD+/ftzySWXsGPHDj755BOOPfbYymNg9erVuayGDoBBkqRGZdq0aRQVFdG6dWug+jTsCxcupHv37hx11FEA5OXl8eabb9KiRYvK7nnbtm1j9+7dOauDVN+tWrWKO+64g1tvvZUBAwZw+umnU1JSQklJCQUFBYwaNYrCwsJqab/5zW/YtWsXS5YsYc2aNbz55pu5rsp+q1r3ZcuWAXt28YXq3XwfffRRhg8fTmlpKVu3bqW0tDQn5df+qen7rvrdPvbYY4wdO5Z58+bRoUMH5syZU9mtu+IYOOWUU3JcE+0vgyRJjcqCBQsoLi4mkUiwYsUK7r333j2m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\n",
      "text/plain": [
       "<Figure size 1008x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "label_num_dict = {} # 类别数量 频次字典\n",
    "\n",
    "for json_path in video_ann_paths:\n",
    "    with open(json_path, 'r') as f:\n",
    "        v_ann = json.load(f)\n",
    "\n",
    "    for frame in v_ann['frames']:\n",
    "        for frame_ann in frame['annotations']:\n",
    "            label = frame_ann['label']\n",
    "\n",
    "        if label not in list(label_num_dict.keys()):\n",
    "            label_num_dict[label] = 1\n",
    "        else:\n",
    "            label_num_dict[label] += 1  \n",
    "            \n",
    "fig = plt.figure(figsize=(14,5))\n",
    "\n",
    "x1 = list(label_num_dict.keys())\n",
    "y1 = list(label_num_dict.values())\n",
    "plt.bar(range(len(x1)), y1)\n",
    "for a, b in zip(list(range(len(x1))), y1):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks(list(range(len(x1))), x1, rotation=45)\n",
    "plt.xlabel(\"视频库类别\")\n",
    "plt.ylabel(\"频次\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "在image图像库里的商品总数：40000\n",
      "在vide视频库里的商品总数：40000\n"
     ]
    }
   ],
   "source": [
    "print('在image图像库里的商品总数：%d' % len(img_folder_paths))\n",
    "print('在vide视频库里的商品总数：%d' % len(video_mp4_paths))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 图像库图像数量频次图\n",
    "针对image文件夹内的jpg图片进行分析。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "all_img_num = 0 # 所有图像数\n",
    "img_num_dict = {} # 图像数量 频次字典\n",
    "\n",
    "for img_folder_path in img_folder_paths:\n",
    "    img_num = len(glob.glob(img_folder_path + '/*.jpg'))\n",
    "    if img_num not in list(img_num_dict.keys()):\n",
    "        img_num_dict[img_num] = 1\n",
    "    else:\n",
    "        img_num_dict[img_num] += 1\n",
    "        \n",
    "    all_img_num = all_img_num + img_num\n",
    "\n",
    "fig = plt.figure(figsize=(6,3))\n",
    "x = list(img_num_dict.keys())\n",
    "y = list(img_num_dict.values())\n",
    "plt.bar(x, y)\n",
    "for a, b in zip(x, y):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks(x)\n",
    "plt.xlabel(\"图像库文件夹中图像数量\")\n",
    "plt.ylabel(\"频次\")\n",
    "plt.title('图像库所有图片数量：%d' % all_img_num)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "大部分商品图像库文件夹中含有5/6张图片，而且，至少为2张图片。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 图像库图像标注概况\n",
    "针对image_annotaion文件夹内的json标注文件进行分析。（图像库图片数 = 图像库图片标注数）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dispaly错标数据: data/train_dataset_part3/image_annotation/001541/0.json\n"
     ]
    },
    {
     "data": {
      "image/png": "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8eEPf7jN6Woyk2OPPZbZs2cDcPHFF3PRRRdx66238te//pVHHnmkO6spSR05EPhWZu4OTAM+AQzIzO2BYRGxcUTs05NlTamlmq71vu+YY47hiiuu4M477+Saa67hySefbHM/2tY+s7P7W6mfWqLibnd/+w8//DDf+ta3OOWUU9hjjz24//7724wHbc1P0pKnN1tOzAH2B14FiIjVgW8CMyNidDVOC3BV9f4OYESDZfOJiHERMSUiptRfkak3YMAAJkyYwCqrrALAPffcw6WXXsrWW2/NySefDMDs2bM54ogjGDp0KNddd12b09VcccUVjB49eu7nM888k0033RSAl156iTXXXLPN9ZCk7srM72bmzdXHwcBBzIuPNwE7MX/M7ImyBXQm5mrR1nrfN2PGDN72trcREayxxhq8+uqrbe5H29pndnZ/K/VHS1rc7e5vf+edd2bkyJHccccdTJ48me23377NeNDW/CQteXotOZGZr2bmK3VF/w/4X+Bi4OCI+AilVcWz1fAZwNoNlrVeh0syc0RmjqhdkWltlVVWYdVVV537ecyYMUycOJH77ruPu+++m4cffpjx48ez2WabcfzxxzN58mTOP//8BaaDknz40Y9+xHHHHbfAciZMmMC73/1u1l133TbXQ5IaFRHbA4OAv9KzsXWh8RY6F3O1aGu979txxx254IIL+MlPfsJTTz3F8OHD29yPtrXP7Oz+VurPlpS4293ffrWOTJgwgUGDBjFw4MA240Fb85O05OnLDjG3Ai7MzGmUTHAL8DqwfDV8pWp9Gilr2A477MDKK6/MgAED2GqrrXj88cd54IEHGDduHEOGDOGggw7itttua3PaE088kbPOOouBAwfOV/7EE09w3nnn8e1vf7snVlGSFlC1TjsfGEvPx9Zeibda9F188cVssskmXHDBBZxwwglERJv70bY0sr+V+oMlOe525bcfEVx44YUMHz6cn//8552en6QlT18Guj8Dw6r3I4CnganMa6a2BfBUg2UN22OPPXj++ef5xz/+wU033cTmm2/ORhttxBNPPAHAlClT2HDDDduc9vbbb+eEE06gpaWFBx98kFNPPZWZM2dywAEHcPnlly+QJZaknhARy1Bapp2Umb0RW3sl3mrRN2DAAN71rncBcOCBBwJt70fb0sj+Vmq2JT3udva3f8455zB+/HgAXn75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zHvqRsNlkqSuycw3gau7UyZJmp9JYUnqvqYmJyRJkqQliUlhSWqbnetIkiRJkqSmMjkhSZIkSZKayuSEJEmSJElqKpMTkiR10qxZs7j99tt5/PHHm70qkiRJixWTE5Kkxda///1vNthgA1paWmhpaeGhhx5iv/32Y+TIkey9997Mnj0bgNNOO41tt92Wo48+eu60W2655dzpbr75ZgD2228/fvOb33DooYfOLZMkSVLjTE5IkhZbDz/8MAcccAATJ05k4sSJPP3002yxxRbcc889bLrpplx33XVMnTqVO++8k8mTJ7PWWmtxyy238NJLL7HJJpvMnW633XZj2rRp7LXXXnz1q1/lpJNO4tZbb2129SRJkhYbJickSYute+65h1/84hdst912fPrTn2bVVVflD3/4A6+//jp/+MMf2Hjjjbn99tv52Mc+RkSwxx57MGnSJO69914mT57MDjvswF577cVrr73GkCFDOPTQQ3nsscf43ve+x0c/+tFmV0+SJGmxYXJCkrTY2nbbbbnllluYPHkys2fP5umnnwbgv//7v1lxxRUZNmwYb7zxBuuttx4Aq6++Oi+88ALDhg3jxhtv5Le//S3Dhw/niiuumDvPW2+9lb///e+stdZaTamTJEnS4mjpZq+AJEm9Zfjw4Sy77LIAjBgxgieffJITTjiB4cOH87Of/YyzzjqLwYMH8+abbwLw+uuv89ZbbzFs2DAGDhw4d7r6/iWOPPJINt54Y84991wuuuiivq+UJEnSYsiWE5KkxdanPvUpHnroIebMmcO1117LtddeyyOPPALAb3/7WyKCbbbZhjvvvBOAhx56iKFDh3LKKadw/fXXA3D11VezxRZbcPfdd3P44YcD8PLLL7Paaqs1p1KSJEmLIVtOSJIWW1/5ylf45Cc/SWbykY98hLFjx3LAAQcwbtw4Nt98c372s5+xzjrrcNJJJ/H5z3+eG264gRtuuIHllluOvfbai5NPPpntt9+eQw45hIEDBzJ+/Hh22GEHVl99db7//e83u3qSJEmLDZMTkqSmG3riL3tv5h88C4Afz4Eff+9R2OU0Bu8CLwA7nv8g8CBvjfwij/3lPpYZfTyjL/5DmW70VwC4Gdj4yzeVslX3hPftyXPAiPPu7b11Bp46+0O9On9JkqT+xOSEJGmJt9TAZVlxk52avRqSJElLLPuc6EUz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\n",
      "text/plain": [
       "<Figure size 1080x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "display_dict = {} # 商品库图展示方式 频次字典\n",
    "viewpoint_dict = {} # 商品库图片拍摄视角 频次字典\n",
    "ann_dict = {} # 一张图的标注数 频次字典\n",
    "\n",
    "for img_ann_folder_path in img_ann_folder_paths:\n",
    "    json_paths = glob.glob(img_ann_folder_path + '/*.json')\n",
    "    for json_path in json_paths:\n",
    "        with open(json_path, 'r') as f:\n",
    "            img_ann = json.load(f)\n",
    "        \n",
    "        for ann in img_ann['annotations']:\n",
    "            display = ann['display']\n",
    "            viewpoint = ann['viewpoint']\n",
    "            \n",
    "            # 更新display频次字典\n",
    "            if display not in list(display_dict.keys()):\n",
    "                display_dict[display] = 1\n",
    "            else:\n",
    "                display_dict[display] += 1\n",
    "            \n",
    "            # 更新viewpoint频次字典\n",
    "            if viewpoint not in list(viewpoint_dict.keys()):\n",
    "                viewpoint_dict[viewpoint] = 1\n",
    "            else:\n",
    "                viewpoint_dict[viewpoint] += 1  \n",
    "                \n",
    "            # 打印display异常信息\n",
    "            if int(display) > 1:\n",
    "                print(\"dispaly错标数据: \" + json_path)\n",
    "            # 打印viewpoint异常信息\n",
    "            if int(viewpoint) > 3:\n",
    "                print(\"viewpoint错标数据: \" + json_path)\n",
    "                \n",
    "        ann_num = len(img_ann['annotations'])\n",
    "\n",
    "        if ann_num not in list(ann_dict.keys()):\n",
    "            ann_dict[ann_num] = 1\n",
    "        else:\n",
    "            ann_dict[ann_num] += 1\n",
    "\n",
    "fig = plt.figure(figsize=(15,4))\n",
    "\n",
    "plt.subplot(1,3,1)\n",
    "x1 = list(ann_dict.keys())\n",
    "y1 = list(ann_dict.values())\n",
    "plt.bar(x1, y1)\n",
    "for a, b in zip(x1, y1):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks(x1)\n",
    "plt.xlabel(\"图像库标注json文件中‘annotations’长度\")\n",
    "plt.ylabel(\"频次\")\n",
    "\n",
    "plt.subplot(1,3,2)\n",
    "x2 = list(display_dict.keys())\n",
    "y2 = list(display_dict.values())\n",
    "plt.bar(x2, y2)\n",
    "for a, b in zip(x2, y2):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks(x2)\n",
    "plt.xlabel(\"图像库标注文件json文件中的'display'\")\n",
    "plt.ylabel(\"频次\")\n",
    "plt.title(\"展示方式字段display（0：纯商品展示，1：试穿展示）\")\n",
    "\n",
    "plt.subplot(1,3,3)\n",
    "x3 = list(viewpoint_dict.keys())\n",
    "y3 = list(viewpoint_dict.values())\n",
    "plt.bar(x3, y3)\n",
    "for a, b in zip(x3, y3):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks(x3)\n",
    "plt.xlabel(\"图像库标注文件json文件中的'viewpoint'\")\n",
    "plt.ylabel(\"频次\")\n",
    "plt.title(\"视角字段viewpoint（0：正面，1：背面，2：左侧， 3：右侧）\")\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（1）商品库中单张图像所对应的标注文件里至少都有1个标注。<br>\n",
    "（2）只有1张出现'display=2'(即侧面视角)的图片，为错标注数据。大部分都是试穿展示，然后再是纯商品展示。<br>\n",
    "（3）大部分图片为正面，其次是背面，最后是侧面。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4. 图像库文本数据概况\n",
    "针对image_text文件夹内的txt文本文件进行分析。（图像库图片数 = 图像库文本标注数）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1gAAADQCAYAAAAalMCAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAbxUlEQVR4nO3df7RdZX3n8ffHhChNFIjchUpLU5wU66qmSkoTAXtxhR8WddSxYGvVDthMlUW7lrUtFGz9gTXOWEdRYIxFh+pohQoWBAQRIomFDkkRdFzjSkWwRaBxQJgwUSD5zh97B28u+XG5Z5+ce895v9Y6K3t/9z7nPE/OvffZ3/P82KkqJEmSJEm9e8qgCyBJkiRJw8IES5IkSZI6YoIlSZIkSR0xwZIkSZKkjphgSZIkSVJHTLAkSZIkqSNzB12AfjjwwANr0aJFgy6GJGmaNmzY8MOqGht0OfrFdkqSZr9dtVVDmWAtWrSI9evXD7oYs9p9993HCSecwK233sqpp57Kt7/9bU488UTOPvtsgJ5ikrQnSe4adBn6yXZKkma/XbVVDhHUTr3jHe9gy5YtXHrppWzdupWbbrqJO+64g40bN/YUkyRJkobZUPZgqTfXX3898+fP51nPehZr1qzhpJNOAuC4445j3bp13HrrrdOOLV68eDCVkiRJkvYCe7C0g0ceeYT3vve9rFq1CoCHH36Ygw8+GICFCxdy33339RSTJEmShllfE6wkByW5td2+MMlNSc6ecHzaMfXHqlWreNvb3sb+++8PwIIFC9iyZQsAmzdvZtu2bT3FJEmSpGHW7x6sDwL7JnktMKeqlgOHJlncS6zPZR5p1113Heeddx7j4+N84xvf4IorrmDdunUA3HbbbSxatIjDDz982jFJkiRpmPVtDlaSlwEPA/cC48DF7aFrgaOAF/UQc7WEPrnxxhsf3x4fH+fyyy/n6KOP5gc/+AFXX301N998M0mmHZMkSZKGWaqq+xdN5gHXAK8Bvgh8Fzi3qm5LchzwYmDxdGNVtWon77kSWAlwyCGHHH7XXb2t8LvojCt7ev4w2frjzfz4e7fytJ/7ZeYsOKDn2Ki6c9WJgy6CNGsk2VBVSwddjn5ZunRpuUy7htlMuY6y7VU/7aqt6lcP1hnA+VX1oyQAm4F922MLaIYm9hJ7gqpaDayGpuHqsC4jb87TFjD/l47uLCZJkiQNq37NwVoBnJZkDfArwCtphvYBLAHuBDb0EJMkSZKkGacvPVhV9dLt222S9SpgbZLnAC8HlgHVQ0ySJEmSZpy+3werqsar6iGahS5uBo6pqgd7ifW7zJIkSZI0HX1bRXCyqnqAn64G2HNMkiRJkmaavvdgSZIkSdKoMMGSJEmSpI6YYEmSJElSR0ywJEmSJKkjJliSJEmS1BETLEmSJEnqiAmWJEmSJHXEBEuSJEmSOmKCJUmSJEkdMcGSJI2kJPsluTrJtUkuSzIvyfeTrGkfL2jPe3eSW5KcN+G5U4pJkkaPCZYkaVS9AfhQVR0H3AucAXyuqsbbxzeTHA4cBRwB/FuSFVONDaRGkqSBM8GSJI2kqjq/qr7S7o4BjwGvSPI/k1yYZC7w68AXqqqAa4Cjn0RMkjSCTLAkSSMtyXLgAOArwIqqOgLYB/gNYD5wd3vq/cBBTyI2+X1WJlmfZP2mTZv6VBtJ0qCZYEmSRlaShcBHgVOA26vqnvbQemAxsBnYt40toGk3pxrbQVWtrqqlVbV0bGysD7WRJM0EJliSpJGUZB5wCXBmVd0FfDrJkiRzgFcDtwEbaOZWASwB7nwSMUnSCJo76AJIkjQgpwIvBs5KchZwA/BpIMDlVXVdkqcA70/yEeCE9nHXFGOSpBFkgiVJGklVdQFwwaTwuyeds61dEfBE4CNV9T2AqcYkSaPHBEuSpN2oqi3A300nJkkaPc7BkiRJkqSOmGBJkiRJUkdMsCRJkiSpIyZYkiRJktQREyxJkiRJ6ogJliRJkiR1xARLkiRJkjpigiVJkiRJHTHBkiRJkqSOmGBJkiRJUkdMsCRJkiSpIyZYkiRJktSRviVYSRYmOTbJgf16D0mSJEmaSfqSYCU5APgScARwQ5KxJBcmuSnJ2RPOm3ZMkiRJkmaafvVgvRB4e1W9D7gGeBkwp6qWA4cmWZzktdON9anMkiRJktSTuf140ar6GkCSl9L0Yi0ELm4PXwscBbyoh9jGye+ZZCWwEuCQQw7ptD6SJEmSNBX9nIMV4GTgAaCAu9tD9wMHAfN7iD1BVa2uqqVVtXRsbKzbykiSJEnSFPQtwarGacDtwEuAfdtDC9r33dxDTJIkSZJmnH4tcvGnSd7U7u4PrKIZ2gewBLgT2NBDTJIkSZJmnL7MwQJWAxcneQvwLeCLwI1JngO8HFhGM2xw7TRjkiT1JMl+wN8Cc4CHaYa1XwA8H7iyqs5pz7twujFJ0ujpSw9WVT1QVcdW1Uur6m1V9SAwDtwMHFNVD1bVQ9ON9aPMkqSR8wbgQ1V1HHAv8Hpc8VaS1KN+9WA9QVU9wE9XA+w5JklSL6rq/Am7Y8DvAB9u9/uy4q0kafi5YIQkaaQlWQ4cAPwLfVzxNsnKJOuTrN+0aVMfaiJJmglMsCRJIyvJQuCjwCn0trrtHle89XYikjQaTLAkSSMpyTzgEuDMqrqL3la3dcVbSRKwF+dgSZI0w5wKvBg4K8lZwKeAN7rirSSpF/ZgSZJGUlVdUFUHVNV4+7gIV7yVJPXIHixJklqueCtJ6pU9WJIkSZLUERMsSZIkSeqICZYkSZIkdcQES5IkSZI6YoIlSZIkSR0xwZIkSZKkjphgSZIkSVJHTLAkSZIkqSMmWJIkSZLUERMsSZIkSeqICZYkSZIkdcQES5IkSZI6YoIlSZIkSR0xwZIkSZKkjphgSZIkSVJHpp1gJVmU5AVdFkaSpC7ZVkmS9rY9JlhJvpDkb5IcP+nQXwHP70+xJEmaOtsqSdJMMZUerIXAB4C52wNJ3gX8oKo+36dySZL0ZNhWSZJmhKkkWAVsBA5M8ntJLgbur6rT+1s0SZKmzLZKkjQj7DLBSvKSJKcDTwN+BngW8Dzg54Bte6d4kiTtWq9tVZKDkqxttw9O8q9J1rSPsTZ+YZKbkpw94XlTikmSRs/uerC+S9Ng7Qu8G/hEVf1RVS0HFiT5yN4ooCRJuzHttirJAcBFwPw29GvA+6pqvH1sSvJaYE77eocmWTzVWN9qLEma0XaZYFXVfVX1X6rqRcCXgD9OMq89tgrYL8lJe6mckiQ9QY9t1VbgZOChdn8Z8JYk/5TkL9vYOHBxu30tcNSTiEmSRtBUVhE8BXhjVZ0JnJdkdZJnAmcAD/e7gJIk7cl02qqqeqiqHpwQupomUfpVYHmSF9L0bt3dHr8fOOhJxCaXcWWS9UnWb9q0adp1lSTNbLtNsJL8BbAc+H2Aqvo94G9pviX8zaq6su8llCRpNzpsq/6hqv5vVW0FbgUWA5tphh8CLKBpN6ca20FVra6qpVW1dGxs7MlVUpI0a+xukYsAG9qGav8khyY5FLgTOBW4J8lbd/Hc/ZJcneTaJJclmdfLJGEnDkuSdqaXtmonrkny7CQ/AxwHfAvYwE+H+y1pX3eqMUnSCJq7h+O/T/MN4PuABybE7wEOYNcNyBuAD1XVV5JcALyedvJvkk+2k39fMN1YVW2cboUlSUNnum3VZO8GbgAeAf5bVX0nyT3A2iTPAV5OM0+rphiTJI2g3S1yUcCzkxwJ/D/g/cAzgZ/QNFo3VtXqXTz3/Kr6Srs7BvwO058kvLOYJEk9tVUTXmO8/feGqnpeVb2wqj7Wxh6iaYduBo6pqgenGuu6rpKk2WFPi1wEeDHwCzRjy/878DXg2cCfJvnZ3T45WU7z7eG/MP1JwnucONy+l5OHJWk09dRW7UlVPVBVF1fVvU82JkkaPbscIpjkKcB9VfXRdoz7O2mGQAT4Z+D3gAuB43fx/IXAR4H/ALyd6U8S3uPEYWgmDwOrAZYuXVq7qbMkaUj02lZJktS13Q0R3Aa8Ocl5VXUuzWpKnwYWAl+sqn8G3rWz57b3ILkEOLOq7qK3ScJOHJYk7VQvbZUkSf2wp0UuXgkcmeRNNMnYc4FvAF9N8ltVtXYXzzuVZrjGWUnOAj4FvHGak4SdOCxJ2p3ptlWSJHVuT3Owfgy8h+Ymjdva2P8C/hA4J8lO50NV1QVVdUBVjbePi5jmJGEnDkuS9mBabZUkSf2wpwTrLuA/Af8R2AeYB5wC3A58ADhzqm/UyyRhJw5Lknajs7ZKkqRe7XaIYFWto50YnOS3q+qzSS6hScy+TLOqnyRJA2NbJUmaSfY0B+txVfXZ9t+JN3G8ufMSSZI0TbZVkqRB29MQQUmSJEnSFJlgSZIkSVJHTLAkSZIkqSMmWJIkSZLUERMsSZIkSeqICZYkSZIkdcQES5IkSZI6YoIlSZIkSR0xwZIkSZKkjphgSZIkSVJHTLAkSZIkqSMmWJIkSZLUERMsSdLISnJQkrXt9j5Jrkjy9SSn9BqTJI0mEyxJ0khKcgBwETC/DZ0ObKiqI4HXJXl6jzFJ0ggywZIkjaqtwMnAQ+3+OHBxu30jsLTHmCRpBJlgSZJGUlU9VFUPTgjNB+5ut+8HDuoxtoMkK5OsT7J+06ZNXVZFkjSDmGBJktTYDOzbbi+gaSN7ie2gqlZX1dKqWjo2NtaXCkiSBs8ES5KkxgbgqHZ7CXBnjzFJ0giaO+gCSJI0Q1wEXJXkaOD5wD/SDPubbkySNILswZIkjbSqGm//vQs4Fvg6sKKqtvYSG0BVJEkzgD1YkiS1quoH/HQ1wJ5jkqTRYw+WJEmSJHXEBEuSJEmSOmKCJUmSJEkdMcGSJEmSpI6YYEmSJElSR0ywJEmSJKkjJliSJEmS1BETLEmSJEnqSF8TrCQHJVnbbu+T5IokX09ySq8xSZIkSZpp+pZgJTkAuAiY34ZOBzZU1ZHA65I8vceYJEmSJM0oc/v42luBk4G/b/fHgTPa7RuBpT3Gbpj4ZklWAisBDjnkkO5qIUmSNIssOuPKQRdBGml968Gqqoeq6sEJofnA3e32/cBBPcYmv9/qqlpaVUvHxsa6rIokSZIkTcneXORiM7Bvu72gfe9eYpIkSZI0o+zNRGUDcFS7vQS4s8eYJEmSJM0o/ZyDNdlFwFVJjgaeD/wjzbC/6cYkSZIkaUbpew9WVY23/94FHAt8HVhRVVt7ifW73JIkSZL0ZO3NHiyq6gfAxV3FJEmSJGkmcbEISZIkSeqICZYkSZIkdcQES5IkIMncJN9PsqZ9vCDJu5PckuS8CedNKSZJGk0mWJIkNV4IfK6qxtsFmubR3CLkCODfkqxIcvhUYoMpviRpJtiri1xIkjSDLQNekeQY4JvAd4AvVFUluQZ4OfDgFGPXDaYKkqRBswdLkqTGLTS3AjkC2AfYl+Y+jAD3AwcB86cYe4IkK5OsT7J+06ZN/amBJGngTLAkSWrcXlX3tNvrgc00SRbAApo2c6qxJ6iq1VW1tKqWjo2N9aH4kqSZwARLkqTGp5MsSTIHeDVNz9RR7bElwJ3AhinGJEkjyjlYkiQ13gN8FghwOXAOsDbJR4AT2sddwPunEJMkjSgTLEmSgKr6Fs1Kgo9rVwQ8EfhIVX3vycQkSaPJBEuSpF2oqi3A300nJkkaTc7BkiRJkqSOmGBJkiRJUkdMsCRJkiSpIyZYkiRJktQREyxJkiRJ6oirCEqSJGkoLTrjykEXAYA7V5046CJoL7IHS5IkSZI6YoIlSZIkSR0xwZIkSZKkjphgSZIkSVJHTLAkSZIkqSMmWJIkSZLUERMsSZIkSeqICZYkSZIkdcQES5IkSZI6YoIlSXtw6qmnsnz5cs4555xBF0WSJM1wcwddAEmayS699FK2bt3KTTfdxCmnnMLGjRtZvHjxoIslaQZadMaVgy6CpBnAHixJ2o01a9Zw0kknAXDcccexbt26AZdIkiTNZCZYkrQbDz/8MAcffDAACxcu5L777htwiSRJ0kw2axKsJBcmuSnJ2YMui6TRsWDBArZs2QLA5s2b2bZt24BLpJnMtkqSNCvmYCV5LTCnqpYn+WSSxVW1cdDlkjT8Dj/8cNatW8eyZcu47bbbOOywwwZdJM1Qo9pWOe9IknaUqhp0GfYoybnAl6vqqiSvB/atqk9NOmclsLLdPQz4zl4u5qg6EPjhoAsh9dFTgOcBjwLzgP8NbB1oiUbDz1fV2KAL8WTsqa3qsZ0a9r+11m92s36zm/Wbvp22VbOiBwuYD9zdbt8PvHjyCVW1Gli9NwslSLK+qpYOuhxSPyU5AFgPHFlV9w66PJqxdttW9dJODfvfWus3u1m/2c36dW+2zMHaDOzbbi9g9pRb0hCoqgeAB0yutAe2VZKkWfPHfwNwVLu9BLhzcEWRJGmnbKskSbNmiOAXgbVJngO8HFg24PLopxyWqVHhz7r2pJ9t1bD//Fm/2c36zW7Wr2OzYpELeHwOxLHAjQ7TkSTNRLZVkqRZk2BJkiRJ0kw3W+ZgSdLAJJkz6DJIkqTZwQRLO5XkwCmc40WnZqUkL0uyNsl1SW5s/92+vWTSuQcAX0myx7+XSU5P8pa+FVySZoAkC5McO5VrBWkUmWBpV65KcsiuDnrRqdmsqq6vqqOragUwt6pWtI+XVtVtSeYmmdue+wBwAxPuaZRkzvYvGLaf13oUeGzCebNlISHNUEkuTHJTkrMHXZauJTkoydp2e58kVyT5epJTBl22XiTZL8nVSa5NclmSecP0Obbt/5eAI4AbkowNU/22a38+b223h6Z+bfv2/SRr2scLkrw7yS1Jzht0+bqU5Pwkr2y39+pnaIKlx7UN25eT3AAcBqxu97+c5Pokb/SiU0PosZ3E3gxcn+TeJBuA44EPJ9nUNrg3A7+RZCHw1bb3ax1wAfCpttG6rj32rL1VEQ2XJK8F5lTVcuDQJIsHXaautBfpF9HcnBngdGBDVR0JvC7J0wdWuN69AfhQVR0H3Au8nuH6HF8IvL2q3gdcA7yM4arfdh8E9h3C38MXAp+rqvGqGgfm0dxe4gjg35KsGGThupLkaOBZVXXFID5DL3T1uLZhI8nHgU9U1WcnHk9yKs1F5y8CdwNbgOOTHAb8K82F6nuSfB24LMmjwNOA7a/7u+05+yQ52RW2NAhJ9qNZTvsnbeiXk1xP80VA0dwg9req6sIkfwZ8o6quap97O/CSqtoy4SV/vT12GhCaL64+XlWf2ysV0jAbBy5ut6+luQjaOLDSdGsrcDLw9+3+OHBGu30jsJTmS7xZp6rOn7A7BvwO8OF2f9Z/jlX1NYAkL6W5KF/IkP2cJnkZ8DBNgjzOcNVvGfCKJMcA3wS+A3yhqirJNTS3mLhukAXsVZJ9gE/QjMb69wzgMzTB0g6SvAZ4DfDcCcM09gP+oar+EPCiU7NaVT0IHAOQ5n5F/xXYBHywqu6cdPrngT+n+SP9S8Adk37OaV/nmcBJwPaf77cmubqqftSfWmhEzKf5MgvgfiaMGJjtquohgCTbQ5PretAAitWpJMuBA2huOD1Un2OaD+5k4AGaL6aGpn5J5gHvpLkW+iLD93t4C7Ciqu5J8jfAvjRJFgzJ7x7wJuDbwH+m6R0/DbiwPbZXPkOHCOpxbZa/iqYx+PCExyXsOIzq8zR/WHkSF53/g+aic/8+VkF6sl4DfHVXB6vquzTXEsuAD9H8fuwgyVOBz9A0yI8Bm2mGllzmBHD1aDPNxQ80PavD3GYPVV3b4cMfBU5hyOoGUI3TgNuBlzBc9TsDOH/CF2TD9vndXlX3tNvrGb76AbwIWN2OlPoMTa/4Xq3jMPwnqgNJlgIrgd8EtgE/nvB4hOYbKsCLTg2HtvfqLcDfTor/bHZcIfPtNEMLflhVN08691CaBG0D8D6ab8r+CPgT4GvALUle1LdKaNhtoBnKArCE5suvYTU0dW17QC4BzqyquxiiugEk+dMkb2p396e5Bhia+gErgNOSrAF+BXglw1W/TydZ0rZzr6bpoRum+gH8M3Bou70UWMRerqM3GtYOkiyi6T6+bUJ4P+BrVfWOCecdCPxTG3/jpNc4FPgbYA3NUMGFNEnbgzTjet8MvLaqbu1XPaTdSfJs4Ergz6rqy0nOBT5dVbckuRD4u6q6Os2S7WfRfMv3YuCHNN9sfrt9nUXAr1bVJe3+acCPq+rCdv8wYGNVbdu7NdQwSPIMYC1NEv9yYFk7xHVoJFlTVeNJfh64iqaNeAlNXbcOtnTTk+StwF/y03b0UzRf1AzF59guUHIx8FTgW8CZND0EQ1G/idok61UM0e9hkl8GPkszfeNymi/C19K0cycAJ1TV9wZXwt61i+R8kma44z40C81czl78DE2wtIP2gvFjVfWKCbFfB15RVX/c7nvRqVkrze0HvgqcUVVfaGMvA/4CmEMzPvv9NMNjvwl8oKo2tuetAP4AeB5w/ORGKMkfAI9W1QV7qToacu3F7LHAjcO+MFDbq3wUcM1svoDdmWH/HK3f7JZkX+BE4J+q6o5Bl6cf9vZnaIKlHST5d8CHtydYSY6g+abjHTRdqh/Hi07NckmesX2S/S6OB5hfVZt3cXxeVT3StwJKkqRZywRLU+ZFpyRJkrR7JliSJEl6giRzBjEXzi9sNdu5iqAkSZJ20M5Z+UqS3V4rJjk9yVt2c/zEJOdM2D83yat2c/5hwJcm7HvPVs06/tBKkiTp8WSmqh6rqgeS3ECzmNX69vj2W1ikqrbfH/NRJtwrM8ncCccAtgKPtYnaucCPgCsmve8ngV8AHm5DjyS5kqYj4Cc0y4lLs4YJliRJkqC5jcqbk/wicDewBTi+7VX6V5pE6mPAKUkeBZ4GHAmQ5Hfb4/skOXknK7W9H/hGVf31Tt73MeC09v3eVVVvbhfQGgfe220Vpf5zDpYkSZIel+TPaJKhq9r924Ffq6otk847Dfhtmp6mc6vqcxOOnUyzwvDTgWcA36e5Fcaj7SlPBd5ZVdcl+WvgX2iW6T+M5j6bB7aPjVX1yn7VVeoHEyxJkiQ9LslzgT9ve5J+CXh/Vb160jnPBC4FLmlDJwGvqqofTTrvBGAZ8B7gH4DxqvrxpHM+Q3M7mKcBFwI3AM8B7qiqD3ZdP6nfXORCkiRJj6uq79LcnWUZ8CFg1cTjSZ4KfAZ4J83wvs3AB4HLkhy4i9fcRpM8/dVODu8HLAJW08y5WkqTYB3uIheajUywJEmSNNnbgYuBH1bVzduDSQ4FvgpsAN4HnA78EfAnwNeAW5K8aNJr7dcOA/w/wLwkn0zyMxOOL2jf45U06wP8Yfv6X5i0YIY0K5hgSZIk6XFJlgDn0yxosU+SjyV5fnt4G/CRqjq7qo5uz/twVR1VVe8CTgBum/ByzwVOpUmY/h54K3APsD7JM9rXvRugqn4CfBS4BXgBcFV/ayr1h3OwJEmSRJJfAT4OfBP4QFVtbOMraBaseB5wfFV9b8Jz/gB4tKou2MVrHkLTQ/XtSfH5VfVwkhOBB4E3AAuBO4DLaIYJHkMzVPDPq+qrnVZW6iMTLEmSJJEkwPyq2ryL4/Oq6pG9XCxp1jHBkiRJkqSOOAdLkiRJkjpigiVJkiRJHTHBkiRJkqSOmGBJkiRJUkdMsCRJkiSpI/8fpu9wePdH2foAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 864x216 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "txt_dict = {'1':0, '0':0} # 文本存在与否 频次字典\n",
    "txt_len_list = [] # 文本长度 列表\n",
    "\n",
    "for txt_path in img_txt_paths:\n",
    "    with open(txt_path, 'r') as f:\n",
    "        txt = f.read()\n",
    "    txt = txt.strip() # 去空格\n",
    "    \n",
    "    if len(txt) != 0:\n",
    "        txt_dict['1'] += 1\n",
    "        txt_len_list.append(len(txt))\n",
    "    else:\n",
    "        txt_dict['0'] += 1\n",
    "\n",
    "fig = plt.figure(figsize=(12,3))\n",
    "\n",
    "plt.subplot(1,2,1)\n",
    "x1 = list(txt_dict.keys())\n",
    "y1 = list(txt_dict.values())\n",
    "plt.bar(x1, y1)\n",
    "for a, b in zip(x1, y1):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks([0,1], ['有文本','无文本'])\n",
    "plt.ylabel('频次')\n",
    "\n",
    "plt.subplot(1,2,2)\n",
    "plt.hist(txt_len_list, align='mid')\n",
    "plt.xlabel(\"文本长度\")\n",
    "plt.ylabel('频次')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（1）所有商品库图片都有文本描述。<br>\n",
    "（2）大部分文本描述长度在30个字左右。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5. 视频库视频标注概况\n",
    "针对video_annotaion文件夹内的json标注文件进行分析。（视频库视频数 = 视频库视频标注数）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABHgAAALICAYAAAAE6EcMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdfbSVdZ3//+c78BYQQY+iJjINLssUQk4GKXRQwMhMc0rH7liJMsks1vwWalpQfh1lxF/WmgbNyS/gpJViWqZ5RyRHoUA8gqJTU/xEJO/oFASBNiC+f3+cDR4OHDu3e3Nxno+19jp7v/d17c/nc9wePut1XdfnisxEkiRJkiRJxfWuSndAkiRJkiRJ7WPAI0mSJEmSVHAGPJIkSZIkSQVnwCNJkiRJklRwBjySJEmSJEkFZ8AjSZIkSZJUcAY8kiRJkiRJBde90h0ol0MPPTQHDBhQ6W5IkqRO9tRTT/0xM6s6s42I6A3cCXQDNgPnAzcDxwMPZOa1pe1md2StOc5zJEnqOpqb63SZgGfAgAHU1dVVuhuSJKmTRcSLZWjms8C3MvPnEXEz8I9At8wcHhFzIuJY4MSOrGXmyuY64zxHkqSuo7m5TpcJeCRJkjpKZn6n0csq4HPAv5dezwNOBYYAd3VgbaeAJyImAhMB+vfv3wGjkiRJReYaPJIkSW0UEcOBPsDvgZdL5XXA4UCPDq7tJDNvyczqzKyuqurUK9IkSVIBGPBIkiS1QUT0BWYCFwKbgANKb/WkYY7V0TVJkqRmOVmQJElqpYjYF/gR8JXMfBF4iobLqAAGA6s7oSZJktQs1+CRJElqvQnAScDUiJgK3Ap8PiKOBMYBw4AEFnZgTZIkqVmewSNJktRKmXlzZvbJzJrS43tADbAEGJWZGzJzY0fWyjtCSZJUNAY8kgpn7dq1DBkyBIAJEyYwfPhwrr322h3vt6cmSW2Vmesz867MfK2zauo8a9euZcSIEQAsW7aM0aNHc8opp/DNb35zxza/+c1vOPvss3e8fvLJJxk5ciSDBg1i9uzZACxatIiBAwdSU1PD6aefDsDWrVs566yzOOWUU5gzZ04ZRyVJ6koMeCQVzmWXXcYbb7zBj3/8Y7Zt28bixYtZtWoVK1eubFdNktQ1rV+/nvHjx7N582YAJk+ezK233sqiRYu45557eOGFF3j++ee5/PLL2bDh7ZOprrvuOu644w6WL1/ODTfcAMDSpUuZOXMmtbW1/OIXvwBg5syZDB06lF/+8pfcfffd/OUvfyn/ICVJez0DHkmF8uijj9KjRw/69etHbW0t5513HgBjx45l0aJF7apJkrqmbt26MXfuXA466CAA1q1bx9FHH01EcMghh7Bx40Z69erFPffcs9N+hxxyCM888wwvvPAChx56KABLlizhmmuuYciQIdx4440AO/2bM3LkSOrq6so4OklSV+Eiy5IKY8uWLVxzzTX85Cc/4ZxzzmHz5s0cddRRAPTt25dly5a1qyZJ6pq2BzvbnXLKKdx444307duX1atXM2jQICJil/3OPvtsHnjgAebNm8e5554LwBe/+EXGjBnDm2++ydChQ7ngggt2+Tdn7dq1nT8oSVKXU/YzeCLi8IhYXno+OyIWR8S0Ru+3uSZp7zZjxgwmTZrEwQcfDEDPnj154403ANi0aRNvvfVWu2qSJAF897vf5b3vfS833ngjV1xxxW7DHYD/+q//4qabbuLf//3fWbBgAb/73e847bTT6N69O/vvvz/HHXccq1ev9t8cSVJZVOISrRuAAyLiXKBbZg4H3hMRx7anVoFxSCqz+fPnc9NNN1FTU8PTTz/N/fffv+PSqmeeeYYBAwYwdOjQNtckSYKGS7aOO+44AD772c82u92KFSv485//zJ///Gf++7//m4jg1FNPZdOmTaxdu5bly5czcOBA/82RJJVFWS/RiojTgM3AazTc+vOu0lvzgFOBIe2ouUKqtJd7/PHHdzyvqanhvvvuY8SIEbzyyis89NBDLFmyhIhoc02SpO2mTZvG9ddf3+zZOwBXXHEF73//+9m0aRMXXnghxx57LJdeeilDhgyhZ8+efOMb36B3796MHz+ej33sYyxcuJBf//rXfOhDHyrjSCRJXUVkZnkaitgXeAT4JHAv8DzwH5n5TESMBU4Cjm1rLTNn7KbNicBEgP79+w998cUXO2VsA658oFM+V9Lftu2vm/jrC8vZ/+gT6NazT7trkspj9YwzO+2zI+KpzKzutAb2QNXV1enCve3XmXO6N//yJ771kf0544wz6N27d6e1I0na+zU31ynnGTxXAt/JzD+XjoRsAg4ovdeThsvF2lPbRWbeAtwCDROfDhyLpD1Et/170uN9IzqsJklSZ+je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XcuIESN2vN66dStnnXUWp5xyCnPmzKlE1yVpj2bAI0mSJKlsVqxYwbe+9S2mTp3KGWecwaOPPsq2bdtYvHgxq1atYuXKlaxfv57x48ezefPmHfvNnDmToUOH8stf/pK7776bv/zlLxUchSTteQx4JEmSJJXNRz7yEYYNG8bjjz/O0qVLeeSRRzjvvPMAGDt2LIsWLaJbt27MnTuXgw46aMd+tbW1O7YbOXIkdXV1Fem/JO2pDHgkSZIklVVmMnfuXPr06UNEcNRRRwHQt29f1q5dy0EHHUTv3r132mfz5s27bNdajS/7WrNmDTU1NZx22mlMnDiRzGz2MrDf/OY3nH322W0drsrMNZ7UVRnwSJIkSSqriOCmm25i0KBB/OpXv+KNN94AYNOmTbz11lu73adnz54t2q45TS/7+u53v8vNN9/Mo48+yu9//3ueffbZ3V4G9vzzz3P55ZezYcOGdoy4wdq1axkyZAjALusOvfnmm/Tv35+amhpqamp49tln293ehg0bGDduHGPHjuWTn/wkW7Zs2e16R0371hFeeOEFzjzzTEaMGMGll166oz5p0iTuv//+Dmunqd2t8dR0PaeOtrvfc2e3uV3jdl5++WXe/e537/gO1dfXd3r7ldDR39WW6uzvbkcw4JEkSZJUNtdffz233XYbAH/+85+58sorWbRoEQDPPPMMAwYM2O1+Q4cObdF2zWl62df06dN53/veB8Cf/vQnDj300N1eBtarVy/uueee1g5zty677DLeeOMNfvzjH++y7tCKFSu44IILqK2tpba2lhNPPLHd7f3gBz9gypQpzJs3j379+nHnnXfu0m7TvnWUK664gq997WssXLiQl156idraWhYuXMhrr73GWWed1WHtNLW7NZ6arufU0Zr+nu+4445ObxN2DS2feOIJpk6duuM7VFVV1antV0pHf1dbohzf3Y5gwCNJkiSpbCZOnMjtt9/OyJEj2bZtG+eccw633347U6ZM4a677uLMM8/c7X7jx4/nqquu4l/+5V/49a9/zYc+9KFWtbu7y74A5s6dy/vf/36OPPLI3V4Gdthhh7Hffvu1fqBNPProo/To0YN+/frtFCRtX3doyZIl/OxnP+Pkk09mwoQJvPnmm+1uc9KkSYwZMwaA+vp6vv/97+/SbtO+dZTf/e53nHTSSQAcdthhbNiwgYsvvpgB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1vqD7uabb+baa6/lscceY9ttt52+XVdlAAceeCDPP/88AOeeey7Tpk3j+uuv5/777+eee+5hypQp7Lrrrjz77LNDel2S+m6TTTZh/fXX55prruHGG29koYUW4qKLLmK99dZjzz335OWXXwZgn3324fWvfz1nnHEG06ZN481vfjPbbLMNt9xyC+eddx5bbLEFAHfffTe33347b3/72wFYaqmluOuuu3jmmWe46667WG211YbtWiVJ6isTPJKkEa31B93666/P3nvvzcorrzy9dX3q1KmzlAFcddVVLLLIIiy77LIATJw4ke233x6ALbbYguuuu45Ro0Zx5plnsthiiw39xUnqs8zkzDPPZMkll2Sdddbhiiuu4MYbb2Tq1Kn89re/5corr+S5557jy1/+Ms888wyf+9znpu974YUX8sorr/CqV70KKAng73znO9Off/Ob3wzAd77zHRZZZJHpQ7ckSeoE8w53BSRJmp3mH3Q///nPWX311fnc5z7HiSeeyEMPPcTCCy88S9k+++zDUUcdxXnnncd2220HlElWV1hhBQBGjx7NzTffbGJH6jARwUknncThhx/OI488Mn0y1+LmAAAgAElEQVR45bhx47jnnnvITHbddVdWXHFFdt11V975zndO3/eLX/wiK6ywAqeccgrLLbccm2yyCausssr057/zne9w8MEHs9Zaa3HuuedyzDHH8NWvfnXIr1GSpP6wB48kacRr/KBba621+O53v8uECRNYdtll2Xnnnbn66qu55ZZbZik79thj2W+//VhiiSWmH2fRRRedPlzrmWee4ZVXXhmuS5LUD8cddxynn346AE899RT77rsvt912G9OmTeP8889n7bXX5nWvex33338/AJMmTWKllVbizDPP5Kijjpq+3xJLLMGll17KBRdcwPjx47n11lvZZpttmDJlyvSJmv/4xz8SEcNzoZIk9YM9eCRJI9pxxx3Hcsstxy677MJTTz3FbrvtNsuPt5VWWmmWsiuuuIKrrrqKk046iVtvvZW99tqLjTfemOuuu47111+f2267jTe84Q3DeWmS+mjChAlsv/32/PjHP2aNNdbgmmuuYaeddiIzed/73sdmm23GtGnTuPjii9l444353//+x+mnn84b3vAGdtxxRzbeeGOWX355TjvtNPbZZ5/pxx0/fjwXXXQR9913HzvuuCMT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\n",
      "text/plain": [
       "<Figure size 1152x720 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# video_ann_paths = glob.glob(video_ann_path + '*.json')\n",
    "\n",
    "video_frame_num_dict = {} # 单个视频帧数 频次字典\n",
    "video_ann_num_dict = {} # 单个视频帧下标注数量 频次字典\n",
    "video_display_dict = {} # 视频标注中‘display’ 频次字典\n",
    "video_viewpoint_dict = {} # 视频标注中‘viewpoint’ 频次字典\n",
    "\n",
    "for v_ann_path in video_ann_paths:\n",
    "    with open(v_ann_path, 'r') as f:\n",
    "        v_ann = json.load(f)\n",
    "    \n",
    "    frame_num = len(v_ann['frames'])\n",
    "    if frame_num not in list(video_frame_num_dict.keys()):\n",
    "        video_frame_num_dict[frame_num] = 1\n",
    "    else:\n",
    "        video_frame_num_dict[frame_num] += 1\n",
    "        \n",
    "    for frame in v_ann['frames']:\n",
    "        video_ann_num = len(frame[\"annotations\"])\n",
    "        \n",
    "        if video_ann_num not in list(video_ann_num_dict.keys()):\n",
    "            video_ann_num_dict[video_ann_num] = 1\n",
    "        else:\n",
    "            video_ann_num_dict[video_ann_num] += 1\n",
    "        \n",
    "        for frame_ann in frame['annotations']:\n",
    "            frame_display = frame_ann['display']\n",
    "            frame_viewpoint = frame_ann['viewpoint']\n",
    "        \n",
    "        # 更新display频次字典\n",
    "        if frame_display not in list(video_display_dict.keys()):\n",
    "            video_display_dict[frame_display] = 1\n",
    "        else:\n",
    "            video_display_dict[frame_display] += 1\n",
    "\n",
    "        # 更新viewpoint频次字典\n",
    "        if frame_viewpoint not in list(video_viewpoint_dict.keys()):\n",
    "            video_viewpoint_dict[frame_viewpoint] = 1\n",
    "        else:\n",
    "            video_viewpoint_dict[frame_viewpoint] += 1  \n",
    "\n",
    "fig = plt.figure(figsize=(16,10))\n",
    "\n",
    "plt.subplot(2,2,1)\n",
    "x1 = list(video_frame_num_dict.keys())\n",
    "y1 = list(video_frame_num_dict.values())\n",
    "plt.bar(x1, y1)\n",
    "for a, b in zip(x1, y1):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks(x1)\n",
    "plt.xlabel(\"单个视频切片帧数\")\n",
    "plt.ylabel(\"频次\")\n",
    "\n",
    "plt.subplot(2,2,2)\n",
    "x2 = list(video_ann_num_dict.keys())\n",
    "y2 = list(video_ann_num_dict.values())\n",
    "plt.bar(x2, y2)\n",
    "for a, b in zip(x2, y2):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks(x2)\n",
    "plt.xlabel(\"单个视频切片下‘anntations’的长度\")\n",
    "plt.ylabel(\"频次\")\n",
    "\n",
    "plt.subplot(2,2,3)\n",
    "x3 = list(video_display_dict.keys())\n",
    "y3 = list(video_display_dict.values())\n",
    "plt.bar(x3, y3)\n",
    "for a, b in zip(x3, y3):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks(x3)\n",
    "plt.xlabel(\"视频标注中的‘display‘\")\n",
    "plt.ylabel(\"频次\")\n",
    "plt.title(\"展示方式字段display（0：纯商品展示，1：试穿展示）\")\n",
    "\n",
    "plt.subplot(2,2,4)\n",
    "x4 = list(video_viewpoint_dict.keys())\n",
    "y4 = list(video_viewpoint_dict.values())\n",
    "plt.bar(x4, y4)\n",
    "for a, b in zip(x4, y4):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks(x4)\n",
    "plt.xlabel(\"视频库标注文件json文件中的'viewpoint'\")\n",
    "plt.ylabel(\"频次\")\n",
    "plt.title(\"视角字段viewpoint（0：正面，1：背面，2：左侧， 3：右侧）\")\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（1）所有mp4视频下，都保证有10个视频切片帧数（即单个视频都有10个frame）。<br>\n",
    "（2）大部分单个视频切片下有1/2个标注（即1/2个bboxes），但也有’没有标注‘和‘很多标注’的情况。<br>\n",
    "（3）大部分视频切片下的图示属于试穿展示。<br>\n",
    "（4）大部分视频切片是正面。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6. 视频库文本数据概况\n",
    "针对video_text文件夹内的txt文本文件进行分析。（视频库视频数 = 视频库文本标注数）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x216 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "v_txt_dict = {'1':0, '0':0} # 文本存在与否 频次字典\n",
    "v_txt_len_list = [] # 文本长度 列表\n",
    "\n",
    "for video_txt_path in video_txt_paths:\n",
    "    with open(video_txt_path, 'r') as f:\n",
    "        txt = f.read()\n",
    "    txt = txt.strip() # 去空格\n",
    "    \n",
    "    if len(txt) != 0:\n",
    "        v_txt_dict['1'] += 1\n",
    "        v_txt_len_list.append(len(txt))\n",
    "    else:\n",
    "        v_txt_dict['0'] += 1\n",
    "\n",
    "fig = plt.figure(figsize=(12,3))\n",
    "\n",
    "plt.subplot(1,2,1)\n",
    "x1 = list(v_txt_dict.keys())\n",
    "y1 = list(v_txt_dict.values())\n",
    "plt.bar(x1, y1)\n",
    "for a, b in zip(x1, y1):\n",
    "    plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=10)\n",
    "plt.xticks([0,1], ['有文本','无文本'])\n",
    "plt.ylabel('频次')\n",
    "\n",
    "plt.subplot(1,2,2)\n",
    "plt.hist(v_txt_len_list, align='mid')\n",
    "plt.xlabel(\"文本长度\")\n",
    "plt.ylabel('频次')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（1）单个视频只有一个视频标注，即单个视频中的10个视频切片都共享一个文本。<br>\n",
    "（2）视频都不一定有文本描述。<br>\n",
    "（3）大部分文本描述长度在100个字左右，比图像库的文本描述长。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7. 其它\n",
    "下列问题均为团队内对数据提出的一些疑问。\n",
    "#### 问题1：是否视频库中出现的衣服，商品图像库都有？同样地，是否图像库中的衣服都能匹配到视频库中的衣服？\n",
    "由于官方说明：“商品图和视频帧中标注了大于0的相同instance_id的检测框为同一件商品，具有对应关系，instance_id为0表示不具有匹配关系”。因此，可以观察video_annotation中是否出现“frames”-\"annotations\"-\"instance_id\"有等于0的情况，回答该问题。若有不匹配，则说明视频库中的衣服无法匹配到商品图像库中。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "视频库中出现的衣服不一定在商品图像库中都有。\n",
      "图片库中出现的衣服不一定在视频库中都有。\n"
     ]
    }
   ],
   "source": [
    "v_instance_list = [] # 记录所有视频标注里的“instance_id”\n",
    "img_instance_list = [] # 记录所有图片标注里的“instance_id”\n",
    "\n",
    "for v_ann_path in video_ann_paths:\n",
    "    with open(v_ann_path, 'r') as f:\n",
    "        v_ann = json.load(f)\n",
    "    \n",
    "    for frame in v_ann['frames']:\n",
    "        for frame_ann in frame['annotations']:\n",
    "            v_instance_list.append(frame_ann['instance_id'])\n",
    "            \n",
    "for img_ann_folder_path in img_ann_folder_paths:\n",
    "    json_paths = glob.glob(img_ann_folder_path + '/*.json')\n",
    "    for json_path in json_paths:\n",
    "        with open(json_path, 'r') as f:\n",
    "            img_ann = json.load(f)\n",
    "\n",
    "        for ann in img_ann['annotations']:\n",
    "            img_instance_list.append(ann['instance_id'])\n",
    "            \n",
    "v2i_unmatch_num = 0\n",
    "i2v_unmatch_num = 0\n",
    "\n",
    "for i in list(set(v_instance_list)):\n",
    "    if i not in list(set(img_instance_list)):\n",
    "        v2i_unmatch_num += 1\n",
    "        \n",
    "for i in list(set(img_instance_list)):\n",
    "    if i not in list(set(v_instance_list)):\n",
    "        i2v_unmatch_num += 1\n",
    "        \n",
    "if v2i_unmatch_num != 0:\n",
    "    print(\"视频库中出现的衣服不一定在商品图像库中都有。\")\n",
    "else:\n",
    "    print(\"视频库中出现的衣服都可以在商品图像库中匹配到\")\n",
    "    \n",
    "if i2v_unmatch_num != 0:\n",
    "    print(\"图片库中出现的衣服不一定在视频库中都有。\")\n",
    "else:\n",
    "    print(\"图片库中出现的衣服都可以在商品视频库中匹配到\")         "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 问题2：视频库和图像库中都分别出现哪些商品类别？\n",
    "官方说明是22个商品大类。针对video_annotation和image_annotation中\"annotations\"-\"labels\"获取集合便可以得到。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "出现的商品类别：\n",
      "--------------------------------------------------\n",
      "视频库(23个)： ['短外套', '短裤', '短袖上衣', '长半身裙', '背带裤', '长袖上衣', '长袖连衣裙', '短马甲', '短裙', '背心上衣', '短袖连衣裙', '长袖衬衫', '中等半身裙', '无袖上衣', '长外套', '无袖连衣裙', '连体衣', '长马甲', '长裤', '吊带上衣', '中裤', '古装', '短袖衬衫']\n",
      "--------------------------------------------------\n",
      "图像库(24个)： ['短外套', '古风', '短裤', '短袖上衣', '长半身裙', '背带裤', '长袖上衣', '长袖连衣裙', '短马甲', '短裙', '背心上衣', '短袖连衣裙', '长袖衬衫', '中等半身裙', '无袖上衣', '长外套', '无袖连衣裙', '连体衣', '长马甲', '长裤', '吊带上衣', '中裤', '古装', '短袖衬衫']\n"
     ]
    }
   ],
   "source": [
    "# video_ann_paths = glob.glob(video_ann_path + '*.json')\n",
    "# img_ann_folder_paths = glob.glob(img_ann_path + '*')\n",
    "\n",
    "v_label_list = [] # 记录所有视频标注里的“label”\n",
    "img_label_list = [] # 记录所有图片标注里的“label”\n",
    "\n",
    "for v_ann_path in video_ann_paths:\n",
    "    with open(v_ann_path, 'r') as f:\n",
    "        v_ann = json.load(f)\n",
    "    \n",
    "    for frame in v_ann['frames']:\n",
    "        for frame_ann in frame['annotations']:\n",
    "            v_label_list.append(frame_ann['label'])\n",
    "            \n",
    "for img_ann_folder_path in img_ann_folder_paths:\n",
    "    json_paths = glob.glob(img_ann_folder_path + '/*.json')\n",
    "    for json_path in json_paths:\n",
    "        with open(json_path, 'r') as f:\n",
    "            img_ann = json.load(f)\n",
    "\n",
    "        for ann in img_ann['annotations']:\n",
    "            img_label_list.append(ann['label'])\n",
    "            \n",
    "print(\"出现的商品类别：\")\n",
    "print('-'*50)\n",
    "print(\"视频库(%d个)：\"%len(set(v_label_list)), list(set(v_label_list)))\n",
    "print('-'*50)\n",
    "print(\"图像库(%d个)：\"%len(set(img_label_list)),list(set(img_label_list)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 问题3：若单个商品图像文件夹中出现多个商品标注，它们都能匹配吗？\n",
    "在’EDA‘-’2. 图像库图像标注概况‘下，我们已经发现单个图片的标注数为0-2之间。但是还想知道’如果单个图像有多个标注，是否都可以与视频匹配上？‘还是说每张图只有一个标注是能匹配的，多余的标注都是’instance_id‘=0，不能匹配上的。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "# img_ann_folder_paths = glob.glob(img_ann_path + '*')\n",
    "\n",
    "# print(\"单个图像文件夹下出现’多个instance_id‘的情况：\")\n",
    "# for img_ann_folder_path in img_ann_folder_paths:\n",
    "#     instance_id_list = [] # 记录单个图像文件夹下所有的'instance_id'\n",
    "    \n",
    "#     json_paths = glob.glob(img_ann_folder_path + '/*.json')\n",
    "#     for json_path in json_paths:\n",
    "#         with open(json_path, 'r') as f:\n",
    "#             img_ann = json.load(f)\n",
    "    \n",
    "    \n",
    "#         ann_num = len(img_ann['annotations'])    \n",
    "#         for ann in img_ann['annotations']:\n",
    "#             instance_id_list.append(ann['instance_id'])\n",
    "    \n",
    "#     if len(set(instance_id_list)) > 1:\n",
    "#        print(set(instance_id_list))\n",
    "\n",
    "# print('-'*50)\n",
    "# print(\"单个图像文件夹下出现’一个instance_id‘的情况：\")\n",
    "# for img_ann_folder_path in img_ann_folder_paths:\n",
    "#     instance_id_list = [] # 记录单个图像文件夹下所有的'instance_id'\n",
    "    \n",
    "#     json_paths = glob.glob(img_ann_folder_path + '/*.json')\n",
    "#     for json_path in json_paths:\n",
    "#         with open(json_path, 'r') as f:\n",
    "#             img_ann = json.load(f)\n",
    "    \n",
    "    \n",
    "#         ann_num = len(img_ann['annotations'])    \n",
    "#         for ann in img_ann['annotations']:\n",
    "#             instance_id_list.append(ann['instance_id'])\n",
    "    \n",
    "#     if len(set(instance_id_list)) <= 1:\n",
    "#         print(set(instance_id_list))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（1）如果查看000013图像文件夹下的图片，便可知道‘20001301’和‘20001302’其实是个衣服套装。由上面可得‘instance_id’的命名规则：<br>\n",
    "2 + < item_id > + <选择><br>\n",
    "若某商品有两种选择，一条裤子，一件衣服，则对于可以标号上述‘<选择>’为‘01’和‘02’。<br>\n",
    "（2）商品图像文件夹正常都是展示统一件商品，如果存在两个标注，要么是不相干的商品（无法被匹配的，‘instance_id’=0），要么是不同款式选择的情况。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 问题4：若单个商品视频切片中出现多个商品标注，它们都能匹配吗？\n",
    "在’EDA‘-’4. 视频库视频标注概况‘下，我们已经发现有’单个视频切片的标注有3-6个‘的情况。但是还想知道’如果单个视频切片中有多个标注，是否都可以与图像库匹配上？‘还是说单个视频切片只有一个标注是能匹配的，多余的标注都是’instance_id‘=0，不能匹配上的。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "# video_ann_paths = glob.glob(video_ann_path + '*.json')\n",
    "\n",
    "for v_ann_path in video_ann_paths:\n",
    "    with open(v_ann_path, 'r') as f:\n",
    "        v_ann = json.load(f)\n",
    "    \n",
    "    instance_id_list_all = [] # 记录单个视频下所有json离得的'instance_id'\n",
    "    for frame in v_ann['frames']:\n",
    "        instance_id_list = [] # 记录单个视频切片下所有的'instance_id'\n",
    "        for ann in frame['annotations']:\n",
    "            instance_id_list.append(ann['instance_id'])\n",
    "            instance_id_list_all.append(ann['instance_id'])\n",
    "\n",
    "# #如果想查看frame-level和video-level下商品标注的'instance_id'的情况，可以分别解除下面的注释并运行\n",
    "\n",
    "#         # 打印出单个视频切片中存在多个商品标注的'instance_id'\n",
    "#         if len(set(instance_id_list))>1:\n",
    "#             print(set(instance_id_list))    \n",
    "    \n",
    "#     # 打印出单个视频中存在多个商品标注的'instance_id'\n",
    "#     if len(set(instance_id_list_all))>1:\n",
    "#         print(set(instance_id_list_all))   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（1）在单个视频（即video-level）下，只存在展示一种商品，但中间可能会有不相干的商品，不过不相干商品都无法匹配到商品库，因为其instance_id=0。而有时也会出现同一个视频中出现一种商品但有不同款式选择的情况，例如一件套装商品含有（裤子和衣服）。<br>\n",
    "（2）在单个视频切片下（即frame_level）下，跟上面是一样的情况。\n",
    "\n",
    "例子：在Live_demo_20200117/video_annotation/000001.json下，如果你看‘frame_index'=0的标注，你会看到有两个annotation，即第1秒视频开头的直播切片存在两个标注，一个是'长裤'，一个是'长款外套'。但这只有'长款外套'是可以匹配到商品图像库的，’长裤‘无法匹配到，因为其'instance_id'=0。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 问题5：视频是否都为一个人？如果有两个人，两个人是否都为一套衣服？或者不相干人的衣服会不会有标注显示？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在单个视频（即video-level）下，只存在展示一种商品，但中间可能会有不相干的商品，不过不相干商品都无法匹配到商品库，因为其instance_id=0。而有时也会出现同一个视频中出现套装搭配（例如裤子和衣服）。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
